[PySide6]介面與邏輯


Posted by Yen on 2024-01-07

上一篇文章講了如何生成.ui文件,並將.ui檔案轉換成.py檔。這時要注意的是,由於.py檔是由.ui檔的內容生成的,所以當我們的GUI介面發生更動,那.ui檔的內容也會更改,如此一來,由.ui檔生成的.py檔也會變動,這裡我們將由.ui檔生成的.py檔稱作介面程式。由於介面程式每次都會初始化,因此我們需要寫一個.py檔案去呼叫介面程式,這個呼叫用的就叫做邏輯程式,這樣介面與邏輯就會分成兩個不同的檔案,如此便可以達成介面與邏輯的分離。

要分離邏輯程式很簡單,首先創建一個first_main_win_run.py檔,並繼承介面檔案的主視窗類別就好。

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setObjectName(u"pushButton")
        self.pushButton.setGeometry(QRect(190, 110, 191, 121))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 800, 21))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"PushButton", None))
    # retranslateUi

這是從上一篇文章的.ui檔生成的介面程式,接著我們用這個介面程式來寫邏輯程式。

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget
from first_main_win import *

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_win = MainWindow()
    main_win.show()
    sys.exit(app.exec())

這是邏輯程式的內容,可以看到邏輯程式只是繼承Ui_MainWindow,並呼叫setupUi方法而已。如此一來,當介面檔重新生成後,邏輯程式就可以使用新的介面程式來使用它。


#Python #gui #pyside







Related Posts

簡明 Linux Shell Script 入門教學

簡明 Linux Shell Script 入門教學

2356. Number of Unique Subjects Taught by Each Teacher

2356. Number of Unique Subjects Taught by Each Teacher

[#006] 344. Reverse String

[#006] 344. Reverse String


Comments